<?php
class archivoTexto{

	private $rutaCompleta = null;
	private $nomDirectorio = null;
	private $nombre = null;
	private $tamano = null;
	private $extension = null;
	private $error = null;
	private $modoApertura = null;
	private $handle = null;
	private $matriz = null;
	private $numLineas = null;

	public function archivoTexto($rutaCompleta){
		 
		if(is_file($rutaCompleta)){
			$this->rutaCompleta = $rutaCompleta;
			$infoArch = pathinfo($rutaCompleta);
			$this->nomDirectorio = $infoArch['dirname'];
			$this->nombre = $infoArch['filename'];
			$this->extension = $infoArch['extension'];
			$this->tamano = filesize($rutaCompleta);
			$this->error = ($this->extension=='txt')?
			(Error::SIN_ERRORES):(Error::ARCH_NO_ES_TXT);
		}
		else{
			$this->error = Error::ARCH_NO_ENCONTRADO;
		}
	}

	public function getLineas(){
		if ($this->error == Error::SIN_ERRORES) {
			//Si no hubieron errores
			if ($this->matriz===null) {
				//Se pide la matriz x 1era vez, crearla
	 			$this->matriz = file($this->rutaCompleta, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
		 		if ($this->matriz === false){//Si ocurre un error
		 			$this->error = Error::PHP_SIST_ARCH_FILE;
		 		}
		 		else{
		 			$this->numLineas = count($this->matriz);
		 		}
			}
			return $this->matriz;
		}
		return false;
	}

	public function getNumLineas(){
		return ($this->getLineas() !== false)?($this->numLineas):(false);
	}

	public function getIndiceBuscarLinea($strCadenaBuscada,$esBusquedaExacta=true){
		if(is_string($strCadenaBuscada)){
		 	if($this->getLineas() !== false){
		 		if($this->numLineas > 0){
		 			if($esBusquedaExacta){
			 			for ($index = 0; $index < $this->numLineas; $index++) {
				 			if ($strCadenaBuscada == $this->matriz[$index]){
				 				return $index;
				 			}
				 		}
		 			}
		 			else{
		 				for ($index = 0; $index < $this->numLineas; $index++) {
				 			if (strpos($this->matriz[$index],$strCadenaBuscada)!==false){
				 				return $index;
				 			}
				 		}
		 			}
		 		}
		 	}
		}
		return false;
	}


	/*  	public function getHandle($modoApertura){
	 if($this->error == Error::SIN_ERRORES){
	 //Si no hubo errores al crear el objeto
	 if(Modo_Apertura::esModoAperturaValido($modoApertura)){
	 if($this->handle === null){
	 //Si se pide el puntero por 1era vez crearlo
	 $this->handle=fopen($rutaCompleta,$modoApertura);
	 $this->error = ($this->handle===false)?
	 (Error::PHP_SIST_ARCH_FOPEN):(Error::SIN_ERRORES);
	 }
	 else{
	 //Si ya se tenia un puntero,
	 //preguntar si es del mismo modo de Apertura
	 if($modoApertura != $this->modoApertura){
	 //Nuevo modo de apertura, cerrar el puntero actual
	 if (is_resource($this->handle)){
	 fclose($this->handle);
	 }
	 //Crear nuevo handle con nuevo modo de apertura
	 $this->handle=fopen($rutaCompleta,$modoApertura);
	 $this->error = ($this->handle===false)?
	 (Error::PHP_SIST_ARCH_FOPEN):(Error::SIN_ERRORES);  					}
	 }
	 }
	 else{
	 $this->error=Error::ARCH_TXT_MODO_NO_VALIDO;
	 }
	 return ($this->error == Error::SIN_ERRORES)?($this->handle):(false);
	 }
	 return false;
	 }  */

	public function getRutaCompleta(){
		return $this->rutaCompleta;
	}

	public function getNomDirectorio(){
		return $this->nomDirectorio;
	}

	public function getNombre(){
		return $this->nombre;
	}

	public function getTamano(){
		return $this->tamano;
	}

	public function getExtension(){
		return $this->extension;
	}

	public function getError(){
		return $this->error;
	}

	public function getModoApertura(){
		return $this->modoApertura;
	}

}